#ifndef __APP_ENERGY_STORAGE_H__
#define __APP_ENERGY_STORAGE_H__

#include <stdint.h>
#include <time.h>

#include "bl0942.h"

#ifdef __cplusplus
extern "C" {
#endif

/* 存储配置 */
#define MAX_DAILY_RECORDS   (365)     // 最多存储365天数据
#define ENERGY_UNIT         (0.1f)    // 能量单位（0.1Wh）

/* 错误代码 */
typedef enum {
    STORAGE_OK = 0,
    STORAGE_INVALID_DATE,
    STORAGE_FILE_ERROR,
    STORAGE_DATA_CORRUPTED,
    STORAGE_NVS_ERROR
} storage_err_t;

/* 数据结构（Packed保证跨平台兼容性） */
typedef struct __attribute__((packed)) {
    uint16_t year;      // 年份（实际年份=year+2000）
    uint8_t month;      // 月份（1-12）
    uint8_t day;        // 日期（1-31）
    uint32_t energy_x10;// 能量值（单位=0.1Wh）
} energy_daily_record_t;

/* API接口 */
storage_err_t app_energy_storage_init(void);
storage_err_t app_energy_storage_save_daily_energy(struct tm *tm,float energy_wh);
storage_err_t app_energy_storage_get_energy(time_t date, float *energy_wh);
storage_err_t app_energy_storage_read_record(uint16_t index, energy_daily_record_t *record);
storage_err_t app_energy_storage_get_all_records(energy_daily_record_t *buffer, uint16_t *count);
storage_err_t app_energy_storage_get_record_count(uint16_t *cnt);
storage_err_t app_energy_storage_delete_all_records(void);
void app_energy_storage_process(electrical_data_t *data);

#ifdef __cplusplus
}
#endif

#endif
